#include<cstdio>
#include<algorithm>
using namespace std;
int n,q;
struct A
{
  int v,p,l,r;
}a[8024];
int main()
{
  freopen("sort.in","r",stdin);
  freopen("sort.out","w",stdout);
  //init
  scanf("%d%d",&n,&q);
  a[0].v=-1,a[0].r=1,a[0].l=-1,a[0].p=0;
  a[n+1].v=2100000000,a[n+1].l=n,a[n+1].r=-1,a[n+1].p=n+1;
  for(int i=1;i<=n;i++)
  {
    scanf("%d",&a[i].v);
    a[i].l=i-1;
    a[i].r=i+1;
  }
  //sort
  int maxn,maxi,k;
  for(int i=n;i>=1;i--)
  {
  	maxn=maxi=-1,k=a[0].r;
  	for(int j=1;j<=i;j++,k=a[k].r)
  	  if(a[k].v>=maxn)
  	  {
  	  	maxn=a[k].v;
  	  	if(k>maxi) maxi=k;
	  }
	a[a[maxi].l].r=a[maxi].r,a[a[maxi].r].l=a[maxi].l;
	a[maxi].l=a[k].l,a[maxi].r=k;
	a[a[k].l].r=maxi,a[k].l=maxi;
  }
  k=a[0].r;
  for(int i=1;i<=n;i++,k=a[k].r) a[k].p=i;
  //for
  int t,x,v;
  for(int i=0;i<q;i++)
  {
  	scanf("%d",&t);
  	if(t==1)//1
  	{
  	  scanf("%d%d",&x,&v);
  	  if(v>a[x].v)//right
  	  {
  	  	//printf("right:\n");
  	  	a[x].v=v;
  	  	k=a[x].r;
  	  	while(a[k].r>0&&(a[x].v>a[k].v||(a[x].v==a[k].v&&x>k)))
  	  	{
  	  	  a[k].p--;
  	  	  //printf("\n%d %d %d\n",k,a[k].v,a[k].p);
  	  	  k=a[k].r;
		}
		a[a[x].l].r=a[x].r,a[a[x].r].l=a[x].l;
	    a[x].l=a[k].l,a[x].r=k;
	    a[a[k].l].r=x,a[k].l=x;
	    a[x].p=a[a[x].l].p+1;
	  }
  	  else//left
  	  {
  	    a[x].v=v;
  	  	k=a[x].l;
  	  	while(a[k].l>0&&(a[x].v<a[k].v||(a[x].v==a[k].v&&x<k)))
  	  	{
  	  	  a[k].p++;
  	  	  k=a[k].l;
		}
		a[a[x].l].r=a[x].r,a[a[x].r].l=a[x].l;
	    a[x].l=a[k].l,a[x].r=k;
	    a[a[k].l].r=x,a[k].l=x;
	    a[x].p=a[a[x].l].p+1;
	  }
	  k=a[0].r;
	  /*printf("show:\n");
	  while(a[k].r>0)
  	  {
  	  	printf("%d %d %d\n",k,a[k].v,a[k].p);
  	  	k=a[k].r;
	  }
	  printf("\n");*/
	}
	else
    {
      scanf("%d",&x);
      printf("%d\n",a[x].p);
	}
  }
  return 0;
}
